﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SistemaPetShop.Negocio;

namespace SistemaPetShop
{
    public partial class cadProduto : Form
    {
        Fornecedor fornecedor = new Fornecedor();
        Produto produto = new Produto();
        BaseClass baseClass = new BaseClass();

        public cadProduto()
        {
            InitializeComponent();
            _ListaFornecedor();
            _CarregarProduto();
            _DesabilitaTelaCadastro();
        }

        private void _CarregarProduto()
        {
            GridViewProduto.DataSource = produto._ListaProduto();
        }

        private void _ListaFornecedor()
        {
            cboFornecedor.DataSource = fornecedor._ListaFornecedor();
            cboFornecedor.DisplayMember = "razaoSocial";
            cboFornecedor.ValueMember = "idFornecedor";

        }



        private void _DesabilitarBotoes()
        {
            btnNovo.Visible = false;
            btnEditar.Visible = false;
            btnExcluir.Visible = false;
            btnSair.Visible = false;
            btnSalvar.Visible = true;
            btnCancelar.Visible = true;
        }

        private void _HabilitaBotoes()
        {
            btnNovo.Visible = true;
            btnEditar.Visible = true;
            btnExcluir.Visible = true;
            btnSair.Visible = true;
            btnSalvar.Visible = false;
            btnCancelar.Visible = false;
        }

        private void _DesabilitaTelaCadastro()
        {
            txtDescrição.Enabled = false;
            txtValor.Enabled = false;
            cboFornecedor.Enabled = false;
            txtNome.Enabled = false;
        }

        private void habilitaTelaCadastro()
        {
            txtDescrição.Enabled = true;
            txtValor.Enabled = true;
            cboFornecedor.Enabled = true;
            txtNome.Enabled = true;
        }

        private void limpaTelaCadastro()
        {
            txtDescrição.BackColor = System.Drawing.Color.White;
            txtDtCadastro.BackColor = System.Drawing.Color.White;
            txtIdProduto.BackColor = System.Drawing.Color.White;
            txtNome.BackColor = System.Drawing.Color.White;
            txtPesquisa.BackColor = System.Drawing.Color.White;
            txtValor.BackColor = System.Drawing.Color.White;
            cboFornecedor.BackColor = System.Drawing.Color.White;
            txtDescrição.Text = "";
            txtDtCadastro.Text = "";
            txtIdProduto.Text = "";
            txtNome.Text = "";
            txtPesquisa.Text = "";
            txtValor.Text = "";
            cboFornecedor.Text = "";
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult dialogResult = MessageBox.Show("Deseja Cancelar a Inclusão de um novo Fornecedor?", "Inclusão de Fornecedor", MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.Yes)
                {
                    limpaTelaCadastro();
                    _HabilitaBotoes();
                    _DesabilitaTelaCadastro();
                    tabControl1.SelectedTab = tabPage1;
                }
                else
                {
                }

                
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                    bool vCampos = validaCamposTelaCadCliente();

                    if (vCampos == false)
                    {
                        MessageBox.Show("É necessário o preenchimento correto de todos os campos que estão em vermelho", "Validação de Campos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                    else
                    {
                        if (txtIdProduto.Text == "")
                        {
                            bool ret = produto.InserirProduto(txtNome.Text, txtDescrição.Text, txtValor.Text, Convert.ToInt32(cboFornecedor.SelectedValue));
                            if (ret == true)
                            {
                                MessageBox.Show("Produto cadastrado com sucesso");
                            }
                            else
                            {
                                MessageBox.Show("Houve algum erro no momento da Inclusão do Produto por favor entre em contato com o Administrador do Sistema");
                            }
                        }
                        else
                        {
                            bool ret = produto._AtualizarProduto(Convert.ToInt32(txtIdProduto.Text), txtNome.Text, txtDescrição.Text, txtValor.Text, Convert.ToInt32(cboFornecedor.SelectedValue));
                            if (ret == true)
                            {
                                MessageBox.Show("Produto Atualizado com sucesso");
                            }
                            else
                            {
                                MessageBox.Show("Houve algum erro no momento da Inclusão por favor entre em contato com o Administrador do Sistema");
                            }

                        }
                        _CarregarProduto();
                        limpaTelaCadastro();
                        _HabilitaBotoes();
                        _DesabilitaTelaCadastro();
                        tabControl1.SelectedTab = tabPage1;


                    }
  

            }
            catch (Exception ex)
            {
                MessageBox.Show("Verificar o erro: " + ex.Message.ToString());
                throw;
            }


        }


        public bool validaCamposTelaCadCliente()
        {
            bool ret = true;
            if (txtNome.Text == "" || txtNome.TextLength < 5)
            {
                txtNome.BackColor = System.Drawing.Color.Red;
                ret = false;
            }
            if (txtValor.Text == "R$    ,")
            {
                txtValor.BackColor = System.Drawing.Color.Red;
                ret = false;
                
            }

            return ret;

        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            limpaTelaCadastro();
            _DesabilitarBotoes();
            habilitaTelaCadastro();
            tabControl1.SelectedTab = tabPage2;
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            limpaTelaCadastro();
            habilitaTelaCadastro();
            _DesabilitarBotoes();
            
            _CarregaTelaCadastroProduto();
            tabControl1.SelectedTab = tabPage2;
        }


        public void _CarregaTelaCadastroProduto()
        {
            DataTable dt = new DataTable();

            if (GridViewProduto.SelectedRows.Count >= 1)
            {
                
                
                dt = produto._ListaProduto(Convert.ToInt32(GridViewProduto.CurrentRow.Cells[0].Value));
                
                txtNome.Text = dt.Rows[0]["nome"].ToString();
                txtDtCadastro.Text = dt.Rows[0]["dataCadastro"].ToString();
                txtDescrição.Text = dt.Rows[0]["descricao"].ToString();
                txtIdProduto.Text = dt.Rows[0]["idProduto"].ToString();
//                txtValor.Text = Convert.ToDouble(dt.Rows[0]["valor"]).ToString("000.00");
                txtValor.Text = baseClass._ApresentaValor(dt.Rows[0]["valor"].ToString());
//                txtValor.Text = Convert.ToDouble(dt.Rows[0]["valor"]).ToString("F");
                cboFornecedor.SelectedValue = dt.Rows[0]["idFornecedor"].ToString();
                
                //Convert.ToDouble(textbox1.Text).ToString("C");



            }



        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult dialogResult = MessageBox.Show("Deseja realmente excluir este Produto?", "Exclusão", MessageBoxButtons.YesNo);
                if (dialogResult == DialogResult.Yes)
                {
                    bool retorno = produto._ApagaProduto(Convert.ToInt32(GridViewProduto.CurrentRow.Cells[0].Value));
                    if (retorno == true)
                    {
                        MessageBox.Show("Produto Excluido com sucesso");
                        _CarregarProduto();
                    }
                    else
                    {
                        MessageBox.Show("Houve problema no momento da exclusão, por favor contate o Administrador");
                    }
                }
                else if (dialogResult == DialogResult.No)
                {
                    MessageBox.Show("Produto não foi excluido");
                }


            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao tentar excluir " + ex.Message.ToString());
                throw;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void GridViewProduto_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            _CarregaTelaCadastroProduto();
        }

        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            GridViewProduto.DataSource = produto._ListaProduto(txtPesquisa.Text,cboTipoPesquisa.Text);
        }

        private void GridViewProduto_SelectionChanged(object sender, EventArgs e)
        {
                _CarregaTelaCadastroProduto();
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            this.Close();
        }



     
    }
}
